请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
数据范围:
"abcabcbb"
3
因为无重复字符的最长子串是"abc",所以其长度为 3。
"bbbbb"
1
因为无重复字符的最长子串是"b",所以其长度为 1。
"pwwkew"
3
因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是子串的长度,"pwke" 是一个子序列,不是子串。
function lengthOfLongestSubstring(s) { // write code here if (!s) return 0; let dic = new Map(); let dp = [1]; let m = 1; dic.set(s[0], 0); for (i = 1; i < s.length; i++) { let j = dic.get(s[i]); dp[i] = j === undefined || dp[i - 1] < i - j ? dp[i - 1] + 1 : i - j; dic.set(s[i], i); m = Math.max(m, dp[i]); } return m; }